package com.cqupt.mapper;


import com.cqupt.pojo.Enclosure;
import com.cqupt.pojo.Knowledge;
import com.cqupt.pojo.Problem;
import com.cqupt.pojo.Type;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;
@Repository
public interface KnowledgeBaseMapper {

    // 查询所有的知识
    List<Map<String,Object>> getAllKnowledge(@Param("id")int type_id, @Param("view_type")int view_type,@Param("approvalStatus")int approvalStatus,@Param("searchText")String searchText);
    // 插入知识
    Integer insertKnowledge(Knowledge knowledge);
    // 删除知识
    Integer deleteKnowledge(int id);
    // 更新知识
    Integer updateKnowledge(Knowledge knowledge);
    // 查询知识
    Map<String, Object> getKnowledgeById(int id);
    // 查询所有分类
    List<Type> getAllType();
    // 查询分类个数
    Integer getAllTypeCount();
    // 更具id查询分类
    String getTypeById(int id);
    // 添加分类
    Integer addType(Type t);
    // 删除分类及其子类
    Integer deleteTypeById(@Param("ids") List<Integer> ids);
    // 更新分类名称
    Integer updateType(Type t);
    // 根据分类查询该分类下的知识数量
    Integer getKnowledgeCountByType(@Param("ids") List<Integer> ids);
    // 根据公共键值获取知识
    List<Map<String, Object>> findKnowledgeBycommonkey(String after_exp);
    // 根据知识d审核知识(通过)
    Integer approvalKnowledgeByID(@Param("id")int id, @Param("approval_man")String approval_man);
    // 根据知识d审核知识(拒绝)
    Integer approvalRefuseKnowledgeByID(@Param("id")int id, @Param("approval_man")String approval_man);
    // 获取所有的common_key
    List<Map<String, Object>> getAllCommonkey();
    // 根据ID有序查找知识
    List<Map<String, Object>> findKnowledgeByidAndOrder(@Param("ids") List<String> ids);
    // 查询知识键值关系表
    Map<String, Object> findRelationshipKK(@Param("id")int id, @Param("commonKey")String commonKey);
    // 采纳操作时，绑定公共键值和知识关系
    Integer insertRelationship(@Param("id")int id, @Param("commonKey")String commonKey);
    // 采纳知识，使之count自加1
    Integer adoptAddOne(@Param("id")int id, @Param("commonKey")String commonKey, @Param("newCount")int newCount);
    //查询所有的于公共键值绑定的知识列表
    List<Integer> findBoundedKonwledges(@Param("commonKey")String commonKey);
    // 按顺序查询绑定知识列表
    List<Map<String, Object>> findBoundedKonwledgesDetails(@Param("ids") List<Integer> list);
    // 浏览次数自增一
    int addKnowledgeViewCount(@Param("id") int knowledgeId);

    List<Enclosure> getClosureByKnowledgeId(Map<String, Object> params);
}
